طرق نسخ ملف بايثون

نسخ الملف في لغة بايثون: Shutil.copy()، طريقة Shutil.copystat()

طرق نسخ ملف بايثون

توفر Python وظائف مضمنة لنسخ الملفات بسهولة باستخدام أدوات شل لنظام التشغيل.

فولوwing يتم استخدام الأمر لنسخ الملف

shutil.copy(src,dst)

فولوwing يتم استخدام الأمر لنسخ الملف مع معلومات البيانات الوصفية

shutil.copystat(src,dst)

كيفية نسخ ملف في بايثون

فيما يلي خطوات نسخ الملف في بايثون باستخدام طريقة Shutil Copy():

الخطوة 1) التقط المسار الأصلي في الدليل الحالي
قبل أن نقوم بنسخ ملف، نحتاج إلى الحصول على المسار إلى الملف الأصلي في الدليل الحالي. في الكود –

  1. إعلان المتغير
  2. تطبيق وظيفة الانقسام على المتغير

نسخ ملف في بايثون

شرح الكود

  • سنقوم أولاً بالتحقق من وجود ملف "guru99.txt" الخاص بنا أم لا. وبما أننا أنشأنا ملف guru99.txt سابقًا، فنحن نعلم أنه موجود، وسنواصل العمل مع الكود
  • نقوم بتخزين مسار الملف في المتغير "SRC"إذا كان ملفك موجودًا
  • بمجرد أن نحصل على المسار، سنقوم بفصل المسار واسم الملف
  • لهذا، سوف نستخدم الانقسام path.split دالة على متغير المصدر
  • الكود عند تنفيذه يطبع "اسم الملف"و"مسار الملف" بشكل منفصل

الخطوة 2) قم بإنشاء نسخة من ملفنا الحالي باستخدام وحدة Shutil
نستخدم وحدة Shutil لإنشاء نسخة من الملف الموجود. لقد اعتدنا هنا على إنشاء نسخة من ملفنا الحالي "guru99.txt".

نسخ ملف في بايثون

شرح الكود

  • خذ اسم الملف الأصلي "guru99.txt" وأضف الحروف .bak في النهاية "guru99.txt.bak". سيكون هذا الاسم ذو الامتداد .bak هو نسختنا المكررة
  • وبعد ذلك سنستخدم وظيفة النسخ الخاصة بالأداة المساعدة للنسخ من المصدر إلى الوجهة
  • عند تشغيل الكود، سترى أنه تم إنشاء ملف مكرر بامتداد .bak على الجانب الأيمن من اللوحة

الخطوة 3) انسخ البيانات الوصفية المرتبطة بالملف وأذونات الملف والمعلومات الأخرى
تقوم وظيفة النسخ بنسخ محتوى الملف فقط ولكن لا توجد معلومات أخرى. لنسخ البيانات الوصفية المرتبطة بالملف وإذن الملف والمعلومات الأخرى التي يتعين عليك استخدامها "com.copystat" وظيفة. قبل أن نقوم بتشغيل هذا الكود، علينا حذف ملف النسخة "guru99.text.bak".

نسخ ملف في بايثون

بمجرد حذف الملف وتشغيل البرنامج، سيقوم بإنشاء نسخة من ملف .txt الخاص بك ولكن هذه المرة مع جميع المعلومات مثل إذن الملف ووقت التعديل ومعلومات البيانات الوصفية. يمكنك الذهاب إلى نظام التشغيل الخاص بك للتحقق من المعلومات.

نسخ ملف في بايثون

ها هو الكود

import os
import shutil
from os import path

def main():
    # make a duplicate of an existing file
	if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    
	#seperate the path from the filter
	head, tail = path.split(src)
	print("path:" +head)
	print("file:" +tail)
	
	#let's make a backup copy by appending "bak" to the name
	dst = src+".bak"
	# nowuse the shell to make a copy of the file
	shutil.copy(src, dst)
	
	#copy over the permissions,modification
	shutil.copystat(src,dst)
	
if __name__=="__main__":
	main()

الخطوة 4) جلب المعلومات
يمكنك جلب المعلومات حول الملف النصي الذي تم تعديله مؤخرًا

نسخ ملف في بايثون

  • سطر الكود رقم 15- يوضح اليوم والتاريخ والشهر والسنة والوقت الذي تم فيه آخر تعديل لملف .txt (guru99). نستخدم وحدة المسار للحصول على وقت تعديل الملف details، ثم سنستخدم فئات الوقت ج وظيفة الوقت لتحويل ذلك إلى وقت قابل للقراءة. لذا عندما نقوم بتشغيل الكود، يمكننا رؤية آخر تعديل للملف guru99.txt الاثنين 8 ينايرth الساعة 13:35 2018.
  • سطر الكود رقم 17- يقوم بنفس الشيء حيث يقدم معلومات حول تعديل الملف، ولكن له تنسيق مختلف لتمثيله. هنا نستخدم الحصول على وظيفة وقت التعديل (path.getmtime("guru99.txt")). الآن بدلاً من استخدام وظيفة الوقت c التي سنستخدمها من وظيفة الطابع الزمني والذهاب لبناء كائن التاريخ والوقت. في الإخراج، يمكنك رؤية تفاصيل وقت تعديل الملف مطبوعة بتنسيق مختلف 2018-01-08, 13:35:51.334072

ها هو الكود

#
# Example file for working with o.s path module

import os
from os import path
import datetime
from datetime import date, time, timedelta
import time

def main():

    # Get the modification time
    t = time.ctime(path.getmtime("guru99.txt.bak"))
    print(t)
    print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))

if __name__ == "__main__":
    main()

نبذة عامة

  • لإنشاء نسخة من الملف الموجود باستخدام الكود Shutil.copy (src,dst)
  • لنسخ جميع معلومات الملف الأصلي إلى ملف مكرر مثل إذن الملف أو وقت التعديل أو معلومات البيانات الوصفية باستخدام الكود Shutil.copystat(src,dst)